package cn.cai.pethome.base.util;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.util.List;

/**
 * 邮件工具类
 * 不能写静态方法
 * 因为此类需要依赖注入JavaMaolSender对象，如果写成静态方法，就无法依赖注入了
 * 因为静态方法是不需要创建当前类的对象来调用，是直接通过 类名称.静态方法名称()
 */
@Component
public class MailUtil {

    @Autowired
    private JavaMailSender javaMailSender;

    /**
     * 发送邮件
     * @param subject 邮件标题
     * @param text 邮件内容
     * @param to  收件人
     * @param attachments 附件的文件集合
     */
    public void sendEmail(String subject, String text, String to, List<File> attachments){
        try {
            //创建复杂邮件对象
            MimeMessage mimeMessage = javaMailSender.createMimeMessage();
            //发送复杂邮件的工具类
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true,"utf-8");
            helper.setFrom("2567209139@qq.com");
            helper.setSubject("邮件标题");
            //第二个参数 true 代表是否是一个html内容
            helper.setText(text,true);
            //添加附件
            if (attachments != null && attachments.size() > 0){
                for (File attachment : attachments) {
                    helper.addAttachment(attachment.getName(),attachment);
                }
            }
            /* helper.addAttachment("压缩文件", new File("C:\\resources.zip"));*/
            //收件人
            helper.setTo(to);
            //抄送
            /* helper.setCc();*/
            //后端密送
            /* helper.addBcc();*/
            //发送邮件
            javaMailSender.send(mimeMessage);
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }
}
